#pragma once

#include <cstring>

#include "r_socket.h"
#include "r_socket_message.h"

namespace eniac
{

class r_socket_ipv4_tcp_partner final
{
public:
    r_socket_ipv4_tcp_partner() = delete;
    r_socket_ipv4_tcp_partner(const r_socket_ipv4_tcp_partner&) = delete;
    r_socket_ipv4_tcp_partner(r_socket_ipv4_tcp_partner&&) = delete;
    r_socket_ipv4_tcp_partner& operator=(const r_socket_ipv4_tcp_partner&) = delete;
    r_socket_ipv4_tcp_partner& operator=(r_socket_ipv4_tcp_partner&&) = delete;

    static r_socket_proxy_ret_t read_message(const r_socket::ptr socket_obj, r_socket_message::ptr& message);
    static r_socket_proxy_ret_t send_message(const r_socket::ptr socket_obj, const std::vector<uint8_t>& message);
    static void close_socket(const r_socket::ptr socket_obj);

private:
};


}